package com.leeon.generics;

public class BasicGenerator<T> implements Generator<T> {

	private Class<T> type;
	
	public BasicGenerator(Class<T> type){
		this.type = type;
	}
	
	@Override
	public T next() {
		try {
			return type.newInstance();
		} catch (InstantiationException | IllegalAccessException e) {
			throw new RuntimeException();
		}
	}

	public static <T> Generator<T> create(Class<T> type){
		return new BasicGenerator<>(type);
	}
	
}
